iT邦幫忙

2021 iThome 鐵人賽

DAY 20
0
永豐金融APIs

當金融與API相遇會擦出什麼火花?系列 第 20

<Day20> Subscribe — 訂閱及時BidAsk五檔報價資料

  • 分享至 

  • xImage
  •  

● 這章會示範如何訂閱及時BidAsk五檔報價資料

什麼是BidAsk?

"Bid"是"委買","Ask"是"委賣",所以"BidAsk"就是委買委賣的資料,而這裡的委買委賣所呈現出來的內容就是五檔報價(最佳五檔),那來稍微解釋一下什麼是五檔報價?""五檔報價"就是離目前市場成交價最接近的上下五個價位,而這五個價位是由之前我有在Day13所講過的tick也就是檔位去做劃分。從這五檔價位裡我們可以看出買賣的成交量各有多少,由此去決定要用什麼價格去做買進跟賣出,只要你符合這些人的出價,你就能立即買到股票。

如何訂閱BidAsk五檔報價資料?

首先一樣要先宣告quote_callback來處理所回傳的資料
程式碼如下

@api.quote.on_quote
def quote_callback(topic: str, quote: dict):
    print(f"Topic: {topic}, Quote: {quote}")

以"永豐金"為例,代碼為「2890
我們來試著Subscribe它的BidAsk五檔報價資料
程式碼如下

api.quote.subscribe(api.Contracts.Stocks["2890"], quote_type='bidask')

顯示以下畫面Response code為200代表訂閱成功!!

https://ithelp.ithome.com.tw/upload/images/20211005/20139934I0JnyF9i4l.png

由於沒有執行程式時,VS Code不會主動顯示輸出
所以我們要再設個時間,讓程式持續執行一段時間去抓取資料
程式碼如下

import time  #引入時間
time.sleep(10)  #持續執行10秒

執行結果如下

Topic: QUT/idcdmzpcr01/TSE/2890, Quote: {'AskPrice': [13.7, 13.75, 13.8, 13.85, 13.9], 'AskVolume': [1165, 521, 708, 467, 721], 'BidPrice': [13.65, 13.6, 13.55, 13.5, 13.45], 'BidVolume': [1476, 3254, 411, 642, 92], 'Date': '2021/10/12', 'Time': '09:17:06.686408'}

英文名詞解釋

  • AskPrice: 委賣價
  • AskVolume: 委賣量
  • BidPrice: 委買價
  • BidVolume: 委買量
  • Date: 交易日期
  • Time: 交易時間

如何取消訂閱?

如果想取消訂閱的話,則是要用"Unsubscribe"
程式碼如下

api.quote.unsubscribe(api.Contracts.Stocks["2890"], quote_type='bidask')

上一篇
<Day19> Subscribe — 訂閱及時Ticks逐筆成交資料
下一篇
<Day21> Snapshots — 取得多檔股票最新資訊
系列文
當金融與API相遇會擦出什麼火花?30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言